import api from './api';
import { Student } from '@/types';

// 接口返回类型
interface ApiResponse<T = any> {
  code: number;
  message: string;
  data?: T;
}

interface StudentListResponse {
  students: Student[];
}

/**
 * 获取教师关联的学生列表
 * @param classId 班级ID
 */
export const getStudentList = async (classId: number): Promise<ApiResponse<StudentListResponse>> => {
  try {
    console.log('获取学生列表:', classId);
    
    // 使用正式接口获取学生数据
    const response = await api.get(`/teacher/student/list?class_id=${classId}`);
    console.log('学生列表响应:', response);
    
    // 根据后端的实际数据结构适配
    if ((response.code === 0 || response.code === 2000)) {
      // 处理不同的数据结构
      if (response.data && Array.isArray(response.data.students)) {
        // 标准格式: data.students是数组
        return response;
      } else if (Array.isArray(response.data)) {
        // data直接是数组的情况
        return {
          code: response.code,
          message: response.message,
          data: {
            students: response.data
          }
        };
      } else if (response.data) {
        // 其他情况，如果data不为空，尝试转换
        console.warn('学生数据结构不规范:', response.data);
        return {
          code: response.code,
          message: response.message,
          data: {
            students: []
          }
        };
      }
    }
    
    return response;
  } catch (error) {
    console.error('获取学生列表错误:', error);
    throw error;
  }
};

/**
 * 查询学生信息
 * @param studentId 学生学号
 */
export const getStudentInfo = async (studentId: string): Promise<ApiResponse<{ student: Student }>> => {
  try {
    const response = await api.get(`/student/info?student_id=${studentId}`);
    return response;
  } catch (error) {
    console.error('获取学生信息错误:', error);
    throw error;
  }
}; 